博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.4 用户头像
阅读量:4096 次
发布时间:2019-05-25

本文共 1228 字,大约阅读时间需要 4 分钟。

通过显示用户头像, 我们可以进一步改进资料页面的外观。

一. 修改|-app/models

class User(UserMixin, db.Model):    avatar_hash = db.Column(db.String(32)) #1       def __init__(self, **kwargs):        super(User, self).__init__(**kwargs)        #...        self.avatar_hash = hashlib.md5(self.email.encode('utf-8')).hexdigest()  #1    def change_email(self, new_email): #2        self.email = new_email        self.avatar_hash = hashlib.md5(self.email.encode('utf-8')).hexdigest()        db.session.add(self)        return True    def gravatar(self, size=100, default='identicon', rating='g'):        if request.is_secure:            url = 'https://secure.gravatar.com/avatar'        else:            url = 'http://www.gravatar.com/avatar'        hash = self.avatar_hash or hashlib.md5(self.email.encode('utf-8')).hexdigest() #1   return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(url=url, hash=hash, size=size, default=default, rating=rating)

二. 修改|-app/templates/user.html

三. 代码理解

#1

计算email的hash值是一项CPU密集型操作, 如果在某个页面生成大量头像, 计算量会非常大。因此我们在User表中增加一avatar_hash属性, 在构造函数中对用户的avatar_hash进行赋值, 以后调用gravatar生成hash的时候, 先从数据库中查找用户的avatar_hash, 如果没有再计算, 会节省很多计算量。

#2

我们添加修改email的函数change_email, 用户改完email后, 需要修改avatar_hash。

四. 运行效果

我们在导航条添加了头像的缩略图, 原理跟标题二相似。

你可能感兴趣的文章
7 年工作经验,面试官竟然还让我写算法题???
查看>>
被 Zoom 逼疯的歪果仁,造出了视频会议机器人,同事已笑疯丨开源
查看>>
上古语言从入门到精通:COBOL 教程登上 GitHub 热榜
查看>>
再见,Eclipse...
查看>>
超全汇总!B 站上有哪些值得学习的 AI 课程...
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
程序员用 AI 修复百年前的老北京视频后,火了!
查看>>
漫话:为什么你下载小电影的时候进度总是卡在 99% 就不动了?
查看>>
我去!原来大神都是这样玩转「多线程与高并发」的...
查看>>
当你无聊时,可以玩玩 GitHub 上这个开源项目...
查看>>
B 站爆红的数学视频,竟是用这个 Python 开源项目做的!
查看>>
安利 10 个让你爽到爆的 IDEA 必备插件!
查看>>
自学编程的八大误区!克服它!
查看>>
GitHub 上的一个开源项目,可快速生成一款属于自己的手写字体!
查看>>
早知道这些免费 API,我就可以不用到处爬数据了!
查看>>
Java各种集合类的合并(数组、List、Set、Map)
查看>>
JS中各种数组遍历方式的性能对比
查看>>
Mysql复制表以及复制数据库
查看>>
进程管理(一)
查看>>